Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. Weโ€™ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

46-tgyuuAn #165

Merged
merged 2 commits into from
Apr 22, 2024
Merged

46-tgyuuAn #165

merged 2 commits into from
Apr 22, 2024

Conversation

tgyuuAn
Copy link
Member

@tgyuuAn tgyuuAn commented Mar 19, 2024

๐Ÿ”— ๋ฌธ์ œ ๋งํฌ

AB

โœ”๏ธ ์†Œ์š”๋œ ์‹œ๊ฐ„

40๋ถ„

โœจ ์ˆ˜๋„ ์ฝ”๋“œ

a = [a, ab, aba] ์™€ b = [b, ab, bab] ๊ฐ€ ์žˆ์„ ๋•Œ

  • $A$์˜ ์›์†Œ aba์˜ ์ ‘๋‘์‚ฌ a์™€ $B$์˜ ์›์†Œ bab์˜ ์ ‘๋ฏธ์‚ฌ bab๋ฅผ ์ด์–ด ๋ถ™์—ฌ abab๊ฐ€ ๋œ๋‹ค.
  • $A$์˜ ์›์†Œ a์˜ ์ ‘๋‘์‚ฌ a์™€ $B$์˜ ์›์†Œ bab์˜ ์ ‘๋ฏธ์‚ฌ bab๋ฅผ ์ด์–ด ๋ถ™์—ฌ abab๊ฐ€ ๋œ๋‹ค.
  • $A$์˜ ์›์†Œ ab์˜ ์ ‘๋‘์‚ฌ a์™€ $B$์˜ ์›์†Œ bab์˜ ์ ‘๋ฏธ์‚ฌ bab๋ฅผ ์ด์–ด ๋ถ™์—ฌ abab๊ฐ€ ๋œ๋‹ค.
  • $A$์˜ ์›์†Œ aba์˜ ์ ‘๋‘์‚ฌ ab์™€ $B$์˜ ์›์†Œ bab์˜ ์ ‘๋ฏธ์‚ฌ ab๋ฅผ ์ด์–ด ๋ถ™์—ฌ abab๊ฐ€ ๋œ๋‹ค.
  • $A$์˜ ์›์†Œ aba์˜ ์ ‘๋‘์‚ฌ ab์™€ $B$์˜ ์›์†Œ ab์˜ ์ ‘๋ฏธ์‚ฌ ab๋ฅผ ์ด์–ด ๋ถ™์—ฌ abab๊ฐ€ ๋œ๋‹ค.
  • $A$์˜ ์›์†Œ ab์˜ ์ ‘๋‘์‚ฌ ab์™€ $B$์˜ ์›์†Œ bab์˜ ์ ‘๋ฏธ์‚ฌ ab๋ฅผ ์ด์–ด ๋ถ™์—ฌ abab๊ฐ€ ๋œ๋‹ค.
  • $A$์˜ ์›์†Œ ab์˜ ์ ‘๋‘์‚ฌ ab์™€ $B$์˜ ์›์†Œ ab์˜ ์ ‘๋ฏธ์‚ฌ ab๋ฅผ ์ด์–ด ๋ถ™์—ฌ abab๊ฐ€ ๋œ๋‹ค.
  • $A$์˜ ์›์†Œ aba์˜ ์ ‘๋‘์‚ฌ aba์™€ $B$์˜ ์›์†Œ bab์˜ ์ ‘๋ฏธ์‚ฌ b๋ฅผ ์ด์–ด ๋ถ™์—ฌ abab๊ฐ€ ๋œ๋‹ค.
  • โ€Š$A$์˜ ์›์†Œ aba์˜ ์ ‘๋‘์‚ฌ aba์™€ $B$์˜ ์›์†Œ b์˜ ์ ‘๋ฏธ์‚ฌ b๋ฅผ ์ด์–ด ๋ถ™์—ฌ abab๊ฐ€ ๋œ๋‹ค.
  • $A$์˜ ์›์†Œ aba์˜ ์ ‘๋‘์‚ฌ aba์™€ $B$์˜ ์›์†Œ ab์˜ ์ ‘๋ฏธ์‚ฌ b๋ฅผ ์ด์–ด ๋ถ™์—ฌ abab๊ฐ€ ๋œ๋‹ค.




์™€ ๊ฐ™์ด $a + bab, ab + ab, aba + b$๊ฐ€ ์•„๋‹Œ A์—์„œ aba๋ฅผ ๊ณจ๋ž์„ ๋•Œ,

aba์˜ ๋ถ€๋ถ„ ์ง‘ํ•ฉ์ธ a, ab, aba ๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด ํฌ์ธํŠธ๋‹ค.







์—ฌ๊ธฐ์—์„œ ์ง€๋‚œ 2๊ฐœ์˜ PR์—์„œ ์‚ฌ์šฉ๋˜์—ˆ๋˜ ํŠธ๋ผ์ด ์ž๋ฃŒ๊ตฌ์กฐ๊ฐ€ ์‚ฌ์šฉ๋œ๋‹ค.

aba๋ผ๋Š” ๋ฌธ์ž๊ฐ€ ์žˆ์„ ๋•Œ ์ด ๋ฌธ์ž๋ฅผ a, ab, aba ๋ผ๋Š” ๋ฌธ์ž๋กœ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ํŠธ๋ผ์ด ์ž๋ฃŒ๊ตฌ์กฐ์— ๋„ฃ์–ด์•ผ ํ•œ๋‹ค.







์ผ๋‹จ ๋ฌธ์ œ์—์„œ ์‹œํ‚ค๋Š” ๋Œ€๋กœ 2๊ฐœ์˜ ํŠธ๋ผ์ด ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ๋งŒ๋“ค์–ด์ค€๋‹ค.


image







์—ฌ๊ธฐ์„œ ์‚ฌ์‹ค A ํŠธ๋ผ์ด์— a๋Š” a, ab, aba 3๊ฐœ์˜ ์›์†Œ์—์„œ ๋‚˜์˜ฌ ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„ ์ง‘ํ•ฉ์ด๊ธฐ ๋•Œ๋ฌธ์— ์ด 3๊ฐœ๊ฐ€ ์žˆ๋Š” ์…ˆ์ด๋‹ค.

ab๋Š” ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ab, aba 2๊ฐœ์˜ ์›์†Œ์—์„œ ๋‚˜์˜ฌ ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„ ์ง‘ํ•ฉ์ด๊ธฐ ๋•Œ๋ฌธ์— ์ด 2๊ฐœ๊ฐ€ ์žˆ๋Š” ์…ˆ์ด๋‹ค.

aba๋Š” aba์—์„œ๋งŒ ๋‚˜์˜ฌ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— 1๊ฐœ๊ฐ€ ์žˆ๋Š” ์…ˆ์ด๋‹ค.

์ฆ‰, ์ด๋“ค ๊ฐ๊ฐ์— ํŒŒ์ƒ๋˜์–ด ๋‚˜์˜ฌ ์ˆ˜ ์žˆ๋Š” ๊ฐœ์ˆ˜๋ฅผ ์นด์šดํŒ… ํ•˜๊ธฐ ์œ„ํ•ด ์˜†์— ๊ฐœ์ˆ˜๋ฅผ ๋‹ฌ์•„์ค€๋‹ค.


image







๊ทธ๋Ÿฌ๋ฉด A์—์„œ a๋ฅผ ๊ณจ๋ž์„ ๋•Œ B์—์„œ๋Š”bab๋ฅผ ๊ณ ๋ฅผ ๊ฒฝ์šฐ abab๋ฅผ ์™„์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.

-> $3 X 1 = 3$

A์—์„œ ab๋ฅผ ๊ณจ๋ž์„ ๋•Œ B์—์„œ ab๋ฅผ ๊ณ ๋ฅด๋ฉด abab๋ฅผ ์™„์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.

-> $2 X 2 = 4$

A์—์„œ aba๋ฅผ ๊ณจ๋ž์„ ๋•Œ B์—์„œ b๋ฅผ ๊ณ ๋ฅด๋ฉด abab๋ฅผ ์™„์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.

-> $1 X 3 = 3$

-> $3 + 4 + 3 = 10$







์—ฌ๊ธฐ์„œ ์ฃผ์˜ํ•  ์ ์€, ํ˜„์žฌ ์˜ˆ์‹œ์—์„œ B์˜ ํŠธ๋ผ์ด์— ๋“ค์–ด๊ฐ€๋Š” ์›์†Œ๊ฐ€ bab ๋ผ ์•ž๊ณผ ๋’ค๊ฐ€ ๊ฐ™์€๋ฐ,

B์— ๋“ค์–ด๊ฐ€๋Š” ์›์†Œ๋Š” ์ ‘๋ฏธ์–ด๋กœ ๋“ค์–ด๊ฐ€๊ธฐ ๋•Œ๋ฌธ์— ๋’ค์—์„œ๋ถ€ํ„ฐ ๋ฐ˜๋Œ€๋กœ ๋„ฃ์–ด์ค˜์•ผ ํ•œ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด abc๋ฅผ ๋„ฃ๋Š”๋‹ค๊ณ  ํ•˜๋ฉด c -> b -> a ์ˆœ์„œ๋กœ ๋„ฃ์–ด์•ผ ํ•จ.







๋‹น์—ฐํ•˜๊ฒ ์ง€๋งŒ add๋ฅผ ํ•  ๋•Œ ์ง€๋‚˜์˜จ ๊ฒฝ๋กœ์— count๋ฅผ 1์”ฉ ๋ชจ๋‘ ๋”ํ•ด์ฃผ๊ณ ,

delete์€ ์ง€๋‚˜์˜จ ๊ฒฝ๋กœ์— count๋ฅผ 1์”ฉ ๋นผ๋ฉด์„œ ์ง€๋‚˜๊ฐ€์ค€๋‹ค.

์•„๋ž˜ ์‚ฌ์ง„์€ ์œ„ ์˜ˆ์‹œ์—์„œ delete A abc๋ฅผ ํ–ˆ์„ ๋–„์˜ ๊ฒฐ๊ณผ์ด๋‹ค.


image







์—ฌ๊ธฐ์— ์ถ”๊ฐ€์ ์œผ๋กœ ๋‘ ๋ฒˆ์งธ ์˜ˆ์‹œ๋ฅผ ์˜ˆ๋กœ ๋“ค์–ด๋ณด์ž๋ฉด,

8
add A a
add B bcd
add A ab
add B cd
find abcd
delete A a
delete B bcd
find abcd

์•„๋ž˜ ์‚ฌ์ง„์ด ์ฒซ ๋ฒˆ์งธ find abcd ๋ฅผ ํ•˜๊ธฐ ์ „์˜ ํŠธ๋ผ์ด ์ƒํƒœ์ด๋‹ค.

(์—ฌ๊ธฐ์„œ ์ฃผ์˜ ๊นŠ๊ฒŒ ๋ด์•ผ ํ•˜๋Š” ์ ์€ B ํŠธ๋ผ์ด๊ฐ€ ๊ฑฐ๊พธ๋กœ ๋“ค์–ด๊ฐ”๋‹ค๋Š” ์ ์ด๋‹ค)

image







๊ทธ๋Ÿฌ๋ฉด A์—์„œ a๋ฅผ ๊ณจ๋ž์„ ๋•Œ B์—์„œ๋Š”bcd๋ฅผ ๊ณ ๋ฅผ ๊ฒฝ์šฐ abcd๋ฅผ ์™„์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.

-> $2 X 1 = 2$

A์—์„œ ab๋ฅผ ๊ณจ๋ž์„ ๋•Œ B์—์„œ cd๋ฅผ ๊ณ ๋ฅด๋ฉด abcd๋ฅผ ์™„์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.

-> $1 X 2 = 2$

-> $2 + 2 = 4$







delete A a
delete B bcd

์—ฌ๊ธฐ์— ์ถ”๊ฐ€์ ์œผ๋กœ ์œ„ ์ฟผ๋ฆฌ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™์€ ๊ทธ๋ฆผ์ด ๋˜๊ณ ,

image







์ด ์ƒํƒœ์—์„œ๋Š” A์—์„œ ab๋ฅผ ๊ณจ๋ž์„ ๋•Œ B์—์„œ cd๋ฅผ ๊ณจ๋ผ์„œ abcd๋ฅผ ์™„์„ฑํ•˜๋Š” ๊ฒฝ์šฐ ๋ฐ–์— ์—†์Œ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

-> $1 X 1 = 1$

๋...!

๐Ÿ“š ์ƒˆ๋กญ๊ฒŒ ์•Œ๊ฒŒ๋œ ๋‚ด์šฉ

@tgyuuAn tgyuuAn added tgyuuAn ํ•œ ์ค„๋กœ๋Š” ์†Œ๊ฐœํ•  ์ˆ˜ ์—†๋Š” ๋‚จ์ž. ์ž‘์„ฑ ์ค‘ โฑ๏ธ labels Mar 19, 2024
@tgyuuAn tgyuuAn self-assigned this Mar 19, 2024
@tgyuuAn tgyuuAn changed the title 2024-03-20 46-tgyuuAn Mar 19, 2024
@tgyuuAn tgyuuAn marked this pull request as ready for review March 19, 2024 16:56
Copy link
Collaborator

@pknujsp pknujsp left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

์ฒ˜๋ฆฌํ•  ๋ฌธ์ž์—ด์ด B์ธ ๊ฒฝ์šฐ ๊ทธ๋Œ€๋กœ ๋’ค์ง‘์–ด ์ฃผ๋Š”๊ฑธ ๋– ์˜ฌ๋ฆฌ๋Š”๋ฐ ์‹œ๊ฐ„์ด ์ข€ ๊ฑธ๋ ธ์Šต๋‹ˆ๋‹ค

์Œฉ ๊ตฌํ˜„์œผ๋กœ ํ’€์–ด์„œ ์ฝ”๋“œ๊ฐ€ ๋งŽ์ด ๊ธธ์–ด์กŒ๋Š”๋ฐ

ํƒœ๊ทœ๋‹˜ ์ฒ˜๋Ÿผ ๋”ฐ๋กœ ํด๋ž˜์Šค ๋งŒ๋“ค์–ด์„œ ์ค‘๋ณต์ค„์ด๊ณ  ์ฝ”๋“œ ๋ณด๊ธฐ ์‰ฝ๊ฒŒ ์งœ๋Š”๊ฒŒ ์ ํ•ฉํ•ด๋ณด์ด๋Š” ๋ฌธ์ œ ๊ฐ™์•„์š”

ํ’€์ด๋ฐฉ๋ฒ•์€ ์ €๋„ ๊ฑฐ์˜ ๋น„์Šทํ•˜๊ฒŒ ํŠธ๋ผ์ด ์ž๋ฃŒ๊ตฌ์กฐ ํ™œ์šฉํ•ด์„œ ๋งต์œผ๋กœ ๋ฌธ์ž๋ฅผ ๋…ธ๋“œ ๋‹จ์œ„๋กœ ๋‚˜๋ˆˆ ๋’ค ์ถ”๊ฐ€/์‚ญ์ œ/๊ฒ€์ƒ‰ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ํ’€์—ˆ์Šต๋‹ˆ๋‹ค

from collections import *
from sys import *

N = 'NUM'
A = {}
B = {}

def add(node, s):
    for char in s:
        if char not in node:
            node[char] = {N : 0}
        node = node[char]
        node[N] += 1
        

def delete(tree, s):
    node = tree[s[0]]
    node[N] -= 1

    # S์˜ ๊ธธ์ด๊ฐ€ 1์ด๊ณ , ํŠธ๋ฆฌ์˜ ์ฒซ ๋…ธ๋“œ ์ค‘์— S์˜ ์ฒซ ๋ฌธ์ž๊ฐ€ ์—†๋‹ค๋ฉด return
    if node[N] == 0:
        tree.pop(s[0])
        return
    
    nodes = deque([(s[0], node)])
    for i in range(1, len(s)):
        node = node[s[i]]
        nodes.append((s[i], node))
        node[N] -= 1

    # ์ž์‹ ๋ฌธ์ž ์ค‘์—์„œ ๋‹ค์Œ ์ž์‹์ด ์—†๋Š” ๋…ธ๋“œ ์ œ๊ฑฐ
    delete_child_char = None
    while nodes:
        char, node = nodes.pop()
        
        if delete_child_char:
            node.pop(delete_child_char)
            
        if node[N] == 0:
            delete_child_char = char
            continue
            
        delete_child_char = None
    

def find(s):
    if len(s) == 1:
        return 0
    if s[0] not in A or s[-1] not in B:
        return 0
        
    a_dict = {}
    prefix_length = 1
    i = 1
    node = A[s[0]]

    # ์ ‘๋‘์‚ฌ์˜ ๊ธธ์ด 1 ~ (S๊ธธ์ด - 1)๊นŒ์ง€ A์—์„œ ๋งŒ๋“ค์–ด์ง€๋Š” ๊ฐœ์ˆ˜ ํŒŒ์•…
    while prefix_length < len(s) and node:
        a_dict[prefix_length] = node[N]
        if s[i] not in node:
            break
            
        node = node[s[i]]
        prefix_length += 1
        i += 1

    b_dict = {}
    suffix_length = 1
    i = len(s) - 2
    node = B[s[-1]]
    
    # ์ ‘๋ฏธ์‚ฌ์˜ ๊ธธ์ด 1 ~ (S๊ธธ์ด - 1)๊นŒ์ง€ B์—์„œ ๋งŒ๋“ค์–ด์ง€๋Š” ๊ฐœ์ˆ˜ ํŒŒ์•…
    while suffix_length < len(s) and node:
        b_dict[suffix_length] = node[N]
        if s[i] not in node:
            break
            
        node = node[s[i]]
        suffix_length += 1
        i -= 1
        
    cases = 0
    for length in range(1, len(s)):
        cases += a_dict.get(length, 0) * b_dict.get(len(s) - length, 0)
        
    return cases


for _ in range(int(stdin.readline().strip())):
    query = stdin.readline().split()
    func, s = query[0], query[-1]

    if func == 'find':
        print(find(s))
        continue

    tree = B if query[1] == 'B' else A
    # B๋Š” S๋ฅผ ๋’ค์ง‘์–ด์„œ ํŠธ๋ฆฌ์— ์ถ”๊ฐ€ํ•œ๋‹ค
    if query[1] == 'B':
        s = s[::-1]
        
    if func == 'add':
        add(tree, s)
    elif func == 'delete':
        delete(tree, s)

Copy link
Collaborator

@H0ngJu H0ngJu left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ํŠธ๋ผ์ด ๋ฌธ์ œ๋ฅผ 3๋ฒˆ์ฏค ๋ณด๋‹ˆ๊นŒ ์ด์ œ ์ข€ ์•Œ ๊ฒƒ ๊ฐ™์•„์š”

๋ฌธ์ œ ๋๊นŒ์ง€ ํ’€์ง€๋Š” ๋ชปํ–ˆ์ง€๋งŒ, ํŠธ๋ผ์ด๋ฅผ ์•„์˜ˆ ๋ชฐ๋ž๋˜ ์ฒ˜์Œ๋ณด๋‹ค ์–ด๋–ค ๋ฐฉํ–ฅ์œผ๋กœ ํ’€์–ด๋‚˜๊ฐ€์•ผํ• ์ง€๋Š” ๋Œ€๋žต์ ์œผ๋กœ ๊ฐ์ด ์žกํžˆ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ ‘๋ฏธ์–ด B์— ๋Œ€ํ•œ ์ฒ˜๋ฆฌ๋Š” A๋ž‘ ๋™์ผํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๋Š”๋ฐ ํƒœ๊ทœ๋‹˜ PR ๋ณด๋‹ˆ๊นŒ ๋ฐ˜๋Œ€๋กœ ๋„ฃ์—ˆ์–ด์•ผ ํ–ˆ๋„ค์š” ํ—ˆํ—ˆ

์ž์„ธํ•œ PR ์ž‘์„ฑ ํ•ญ์ƒ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค :)

@MunbinLee
Copy link
Contributor

#include <iostream>
#include <array>
#include <vector>
#include <algorithm>
#include <unordered_map>
#include <map>

using namespace std;

struct Node {
    int count;
    array<Node *, 26> children;
};

int nodeCnt = 0;
vector<Node> nodes(999002);
Node *A, *B;
map<string, unordered_map<string, Node *> > cache;

Node *createNode() {
    return &nodes[nodeCnt++];
}

void init() {
    A = createNode();
    B = createNode();
}

void add(const string &target, const string &S) {
    Node *curNode = target == "A" ? A : B;

    for (int i = 0; i < static_cast<const int>(S.size()); i++) {
        const int ch = S[i] - 'a';

        if (!curNode->children[ch]) {
            curNode->children[ch] = createNode();
        }

        curNode = curNode->children[ch];
        curNode->count++;
        cache[target][S.substr(0, i + 1)] = curNode;
    }
}

void del(Node *curNode, const string &S) {
    for (char ch: S) {
        ch -= 'a';
        curNode = curNode->children[ch];
        curNode->count--;
    }
}

int find(const string &target, const string &S) {
    if (!cache[target].contains(S)) return 0;

    return cache[target][S]->count;
}

int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);

    init();

    int Q;
    cin >> Q;

    while (Q--) {
        string command;
        cin >> command;

        if (command == "add") {
            string target, S;
            cin >> target >> S;

            if (target == "B") {
                ranges::reverse(S);
            }

            add(target, S);
            continue;
        }

        if (command == "delete") {
            string target, S;
            cin >> target >> S;

            if (target == "A") {
                del(A, S);
                continue;
            }

            if (target == "B") {
                ranges::reverse(S);
                del(B, S);
            }

            continue;
        }

        if (command == "find") {
            int count = 0;

            string S;
            cin >> S;

            for (int i = 1; i < static_cast<const int>(S.size()); i++) {
                string prefix = S.substr(0, i);
                string suffix = S.substr(i);
                ranges::reverse(suffix);
                count += find("A", prefix) * find("B", suffix);
            }

            cout << count << '\n';
        }
    }

    return 0;
}

๋กœ์ง์€ ๊ฐ™์€๋ฐ ๊ณ„์† 97%์—์„œ ์‹œ๊ฐ„ ์ดˆ๊ณผ๊ฐ€ ๋– ์„œ

ํŠธ๋ผ์ด์˜ ๊ฐ ๋…ธ๋“œ๋ฅผ ๋งคํ•‘ํ–ˆ๋”๋‹ˆ ์•„์Šฌ์•„์Šฌํ•˜๊ฒŒ ํ†ต๊ณผํ—€์Šต๋‹ˆ๋‹ค.

์ข€ ๋” ์ตœ์ ํ™”ํ•  ๊ป€๋•์ง€๊ฐ€ ์žˆ๋Š”์ง€ ๋‚˜์ค‘์— ํ•œ ๋ฒˆ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

image

@tgyuuAn tgyuuAn merged commit 92f8388 into main Apr 22, 2024
@tgyuuAn tgyuuAn deleted the 46-tgyuuAn branch April 22, 2024 03:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
tgyuuAn ํ•œ ์ค„๋กœ๋Š” ์†Œ๊ฐœํ•  ์ˆ˜ ์—†๋Š” ๋‚จ์ž. ๋ฆฌ๋ทฐ ์™„๋ฃŒ โœ”๏ธ
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants